﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL;
using Entidades;
using System.Data;
using System.Data.Common;

namespace DAO
{
    public class EncuestaDAO : DAOBase
    {
        private const string InsertProcedure = "PR_ENCUESTA_I";
        private const string UpdateProcedure = "PR_ENCUESTA_U";
        private const string SelectProcedure = "PR_ENCUESTA_S";
        private const string SelectAllProcedure = "PR_ENCUESTA_SA";
        private const string DeleteProcedure = "PR_ENCUESTA_D";

        public EncuestaDAO() : base() { }

        #region VirtualProcedures

        public override string obtainInsertProcedure()
        {
            return InsertProcedure;
        }

        public override string obtainDeleteProcedure()
        {
            return DeleteProcedure;
        }

        public override string obtainUpdateProcedure()
        {
            return UpdateProcedure;
        }

        public override string obtainSelectProcedure()
        {
            return SelectProcedure;
        }

        public override string obtainSelectAllProcedure()
        {
            return SelectAllProcedure;
        }

        #endregion

        #region IDAO Members

        public override void cargarEntidad(EntidadBase entidad, IDataReader reader)
        {
            EntidadEncuesta encuesta = (EntidadEncuesta)entidad;
            object tempValue;
            // Campo Id
            encuesta.Id = Convert.ToInt32(reader["id_Encuesta"]);
            // Resto de campos
            tempValue = reader["conociasLab"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.ConociasLab = false;
            }
            else
            {
                encuesta.ConociasLab = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["cualquierAlumno"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.CualquierAlumno = false;
            }
            else
            {
                encuesta.CualquierAlumno = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["charlas"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.Charlas = false;
            }
            else
            {
                encuesta.Charlas = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["participar"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.Participar = false;
            }
            else
            {
                encuesta.Participar = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["recibirInfo"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.RecibirInfo = false;
            }
            else
            {
                encuesta.RecibirInfo = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["baseDatos"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.BaseDatos = false;
            }
            else
            {
                encuesta.BaseDatos = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["lenguajes"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.Lenguajes = false;
            }
            else
            {
                encuesta.Lenguajes = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["compiladores"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.Compiladores = false;
            }
            else
            {
                encuesta.Compiladores = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["dataMining"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.DataMining = false;
            }
            else
            {
                encuesta.DataMining = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["inteligenciaArtificial"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.InteligenciaArtificial = false;
            }
            else
            {
                encuesta.InteligenciaArtificial = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["concurrente"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.Concurrente = false;
            }
            else
            {
                encuesta.Concurrente = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["imagenes"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.Imagenes = false;
            }
            else
            {
                encuesta.Imagenes = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["moviles"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.Moviles = false;
            }
            else
            {
                encuesta.Moviles = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["seguridad"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.Seguridad = false;
            }
            else
            {
                encuesta.Seguridad = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["robotica"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.Robotica = false;
            }
            else
            {
                encuesta.Robotica = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["interdisciplinarios"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.Interdisciplinarios = false;
            }
            else
            {
                encuesta.Interdisciplinarios = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["hpc"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.HPC = false;
            }
            else
            {
                encuesta.HPC = Convert.ToBoolean(tempValue);
            }

            tempValue = reader["fk_id_alumno"];
            if (tempValue.Equals(DBNull.Value))
            {
                encuesta.Alumno= 0;
            }
            else
            {
                encuesta.Alumno = Convert.ToInt32(tempValue);
            }

        }

        public override List<EntidadBase> cargar(IDataReader reader)
        {
            // Creo la lista vacia
            List<EntidadBase> listaEntidades = new List<EntidadBase>();
            // Itero en el data reader y cargo los datos basicos
            while (reader.Read())
            {
                EntidadEncuesta entity = new EntidadEncuesta();
                cargarEntidad(entity, reader);
                listaEntidades.Add(entity);
            }

            reader.Close();

            return listaEntidades;
        }

        #endregion
    }
}
